// Implementacja prostego narzdzia do kopiowania plikw

#import <Foundation/Foundation.h>

int main (int argc, char *argv[])
{
    NSAutoreleasePool  * pool = [[NSAutoreleasePool alloc] init];
    NSFileManager      *fm;
    NSString           *source, *dest;
    BOOL               isDir;
    NSProcessInfo      *proc = [NSProcessInfo processInfo];
    NSArray            *args = [proc arguments];

    fm = [NSFileManager defaultManager];

    // Sprawdzenie, czy w wierszu polece zostay podane dwa argumenty

    if ([args count] != 3) {
        NSLog (@"Uyto: %@ src dest", [proc processName]);
        return 1;
    }

    source = [args objectAtIndex: 1];
    dest = [args objectAtIndex: 2];

    // Sprawdzenie, czy plik rdowy da si odczyta

    if ([fm isReadableFileAtPath: source] == NO) {
        NSLog (@"Nie mona odczyta pliku %@", source);
        return 2;
    }

    // Sprawdzenie, czy plik docelowy jest katalogiem
    // Jeli tak, to dodaje plik rdowy na kocu docelowego

    [fm fileExistsAtPath: dest isDirectory: &isDir];

    if (isDir == YES)
        dest = [dest stringByAppendingPathComponent:
              [source lastPathComponent]];

    // Usunicie pliku docelowego, jeli ju istnieje

    [fm removeItemAtPath: dest error: NULL];

    // Wykonanie operacji kopiowania

    if ([fm copyItemPath: source toPath: dest error: NULL] == NO) {
        NSLog (@"Kopiowanie nie powiodo si!");
        return 3;
    }

    NSLog (@"Kopiowanie pliku %@ do %@ zakoczone powodzeniem!", source, dest);

    [pool drain];
    return 0;
}